웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > php

[PHP] 정규 표현식을 이용한 문자열 검색과 이용하지 않은 검색, strpos() 그리고 preg_match()

Last Modified : 2015-11-15 / Created : 2014-06-23
7,995
View Count
특정 문자열에서 원하는 단어 또는 문자를 찾기위한 방법으로 strpos() 또는 preg_match()를 사용할 수 있습니다. 이 둘 모두 포함된 텍스트를 찾는데 사용할 수 있지만 preg_match를 사용하면 정규표현식을 사용하여 일치하는 문자열이 있는지를 알아낼 수 있습니다. 그럼 아래는 간단한 사용방법입니다.


  strpos('문자열', '찾으려는 문자열')  

strpos()는 검색결과로 아래의 결과값을 반환합니다.
  • 일치하는 문자열을 발견하면 해당 위치를 정수로 위치값을 반환함
  • 만약 찾는 값이 없으면 불리언(Boolean)값인 false를 반환함
조금 특이한 점이라면 자바스크립트 indexOf()와 비슷하나 없는 경우 -1로 반환하는 것과 달리 strpos()는 불리언으로 false를 반환하죠.
그럼 아래에는 예제를 사용하여 strpos()를 사용해보도록 하겠습니다. 아래의 변수 $url에 /regexp/가 포함되어 있는지 알아보는 간단한 예제입니다.

# PHP에서 strpos()를 사용하여 일치하는 단어 찾기 예제소스


$url = 'http://webisfree.com/regexp/';
$searchStr = '/regexp/'
if (strpos($url, $searchStr) !== false ) {
  echo 'Found it !!';
}
else {
  echo 'Not found !'
}


특정 문자가 포함이 되어 있는지 안되어 있는지를 찾을 수 있습니다. 비교 연산자를 넣을때 !=가 아닌 !==로 넣어야 원하는 결과를 얻을 수 있습니다.


! strpos() 두번째 예제보기


만약 현재의 접속 주소에 www가 포함되어 있는지 확인할 경우 어떻게 할까요? 아래는 www가 존재하는지 확인하는 예제입니다.

<?php
echo $cur_url = $_SERVER['HTTP_HOST'];
// 현재 호스트명을 변수에 저장

if (strpos($cur_url, 'www') === false) {
  echo 'www는 포함되어 있지 않음';
}
?>

위는 일치하지 않는 조건을 찾기 위한 방법으로 !==가 아닌 === 를 사용합니다. 그럼 일치하는 방법도 볼까요?

<?php
if (strpos($cur_url, 'www') !== false) {
  echo 'www를 찾았습니다.';
}
?>

간단하게 찾을 텍스트, 단어를 문장에서 찾아 알려줍니다. 

Previous

[PHP] 현재 페이지 url주소, 파라미터, 쿼리스트링등의 값 확인하는 방법

Previous

APMSETUP 설치 후 phpmyadmin 접속이 안되는 경우